Video signals are employed by numerous modern devices, such as video game consoles or virtual reality graphics engines, and the like. In the past, video signals were typically employed in a relatively static fashion. Standard television systems, for example, operated statically. A video signal was created in a studio and then transmitted to a remote display device, such as a television console in a viewer's home. More recently, video systems have been developed which operate interactively, accepting inputs from the user. In these interactive devices, such as video games for example, the ultimate video display has been generated in an interactive fashion. Inputs from a user or users are received through electrical input means such as a joystick, keyboard, or other game control device. These inputs are received, processed and employed in the creation of the video output.
For example, a typical video game would generate various representations of objects. Such objects are typically created by a digital processor subject to software control which produces digital representations of the objects which are then converted to video signals and output to a display. The user inputs are often used by the video game device to control the motion of the represented object. These inputs from the user have typically been in the form of electrical impulses and not video signals. Typical prior art video game devices had no need or mechanism for employing true video signals as inputs to influence the operation of the game.
More recently, however, modern video devices more and more frequently employ video input devices such as video cameras, and the signals received from these video cameras, to influence the operation of the device. A modern virtual reality system, for example, may employ a camera fixed on or tracking the user. The camera will create video signals which will then be transmitted to various devices within the virtual reality system. Some of these devices may, for example, incorporate an image of the user into a display containing other computer-generated visual representations. Other devices may interpret various gestures or movements of the user detected by the camera, converting these gestures or movements into game control inputs.
Any such video game or virtual reality system, or any other client system which employs video data as an input in an interactive fashion, requires a flexible, efficient method of video synchronization. Such a method must be adaptable to the requirements of various client systems, and will ideally be adjustable based on commands from the client system.
The synchronization method must also be efficient, providing the video signal to the client at the time it is required by the client. This is important in order to assure smoothness of operation for the system. In a video system, such as a virtual reality system, for example, it is important that the system exhibit a low latency. In other words, the system should respond as instantaneously as possible to an input by the player or user. Lag resulting from system processing requirements or video mismatch is undesirable. A system which responds substantially immediately to the operator will make for better and more precise control by the operator, and will lead to an increased sense of immersion by the operator.
Some video systems of the prior art totally lack synchronization. This lack degrades the performance of the system, as significant lags may exist between the time the client device is ready for the video data and the time the video data is available. Moreover, a lack of synchronization will add complexity to the operation of the system, as the client device will make a variable number of repeated requests for the video data until it finally receives it.
Video synchronization methods and apparatus exist which employ phase-locked loops to synchronize video cameras to synchronization sources. These approaches, however, lock the camera not frame by frame, but line by line and pixel by pixel. Moreover, instead of synchronizing the video data to the requirements of the client device, phase-locked loop synchronization simply locks both the video data and the client device to a reference signal. This approach to synchronization is not suitable for variable timing requirements of client devices. Thus, phase lock loop synchronization techniques present several disadvantages. These include a requirement for additional circuitry to achieve a degree of lock beyond what is required for the purposes of the particular video system, a requirement of a video synchronization signal which includes horizontal and vertical synchronization and color burst features which are not always readily available in environments in which video game systems, for example, are used, and a lack of flexibility, in that a phased-lock loop synchronization cannot easily be adjusted to meet the requirements of various clients, and in particular cannot easily respond to varying requirements of a client. Varying processing loads on a client, for example, may cause the client to vary in the times it is able to receive data, and thus to vary slightly the timing of its data requests.
There exists, therefore, a need in the art for synchronization methods and apparatus which operate flexibly to achieve frame-by-frame synchronization, employ synchronization signals which are readily available, and which are easily adjustable to match the client's timing requirements.